#pragma once
#include "contentobject.h"

#include "Property.h"
#include "LongProperty.h"
#include "DateProperty.h"
#include "PropertyGUID.h"

ref class WPDContentObject :
public ContentObject
{
public:
	WPDContentObject(String^ objectID);
	virtual ~WPDContentObject(void);

	virtual void readProperties();
	virtual ContentObject^ create();

	/*virtual property String^ ObjectID
	{
	virtual String^ get()  { return m_ObjectID; }
	virtual void set(String^ val){m_ObjectID = val;}
	}

	virtual property String^ ParrentObjectID
	{
	virtual String^ get()  { return m_ParrentObjectID; }
	virtual void set(String^ val){m_ParrentObjectID = val;}
	}

	virtual property String^ ObjectName
	{
	virtual String^ get()  { return m_ObjectName; }
	virtual void set(String^ val){m_ObjectName = val;}
	}

	virtual property String^ ObjectPersistanceUID
	{
	virtual String^ get()  { return m_ObjectPersistanceUID; }
	virtual void set(String^ val){m_ObjectPersistanceUID = val;}
	}

	virtual property String^ ObjectFormat
	{
	virtual String^ get()  { return m_ObjectFormat; }
	virtual void set(String^ val){m_ObjectFormat = val;}
	}

	virtual property String^ ObjectContentType
	{
	virtual String^ get()  { return m_ObjectContentType; }
	virtual void set(String^ val){m_ObjectContentType = val;}
	}

	virtual property String^ ObjectFileName
	{
	virtual String^ get()  { return m_ObjectFileName; }
	virtual void set(String^ val){m_ObjectFileName = val;}
	}

	virtual property String^ ObjectSyncID
	{
	virtual String^ get()  { return m_ObjectSyncID; }
	virtual void set(String^ val){m_ObjectSyncID = val;}
	}

	virtual property long ObjectSize
	{
	virtual long get()  { return m_ObjectSize; }
	virtual void set(long val){m_ObjectSize = val;}
	}

	virtual property String^ ObjectCreateDate
	{
	virtual String^ get()  { return m_ObjectCreateDate; }
	virtual void set(String^ val){m_ObjectCreateDate = val;}
	}

	virtual property String^ ObjectModifyDate
	{
	virtual String^ get()  { return m_ObjectModifyDate; }
	virtual void set(String^ val){m_ObjectModifyDate = val;}
	}

	virtual property String^ ObjectKeywords
	{
	virtual String^ get()  { return m_ObjectKeywords; }
	virtual void set(String^ val){m_ObjectKeywords = val;}
	}*/

protected:

	String^			m_ObjectID;
	Property^		m_ParrentObjectID;
	Property^		m_ObjectName;
	Property^		m_ObjectPersistanceUID;
	Property^		m_ObjectFormat;
	Property^		m_ObjectContentType;
	LongProperty^	m_ObjectSize;
	Property^		m_ObjectSyncID;
	Property^		m_ObjectFileName;
	DateProperty^	m_ObjectCreateDate;
	DateProperty^	m_ObjectModifyDate;
	Property^		m_ObjectKeywords;

	System::Collections::Generic::Dictionary<PropertyGUID^, Property^>^ m_Properties;
};
